const app = getApp()
import {
  WeixinModel
} from '../models/weixin.js'
let weixinModel = new WeixinModel()


let mineBehavior = Behavior({
  properties: {
    userInfo: Object,
    hasUserInfo: Boolean
  },

  data: {

  },

  methods: {
    //点击头像  获取用户信息
    onGetUserInfo: function (e) {
      // console.log(e)
      let data = {
        iv: e.detail.iv,
        encryptedData: e.detail.encryptedData,
        openId: app.getGlobalOpenId()
      }
      
      this.getUserInfoFromServer(data)

    },
    hasGottenUserInfo: function () {
      let self = this
      // 获取用户是否授权状态
      wx.getSetting({
        success: data => {
          // console.log("获取用户已授权 列表")
          // console.log(data)
          if (data.authSetting['scope.userInfo']) { // 如果用户已经授权，直接通过改接口获取部分微信用户信息
            // 如果有本地用户信息则从缓存获取
            if(this.data.hasUserInfo){
                // console.log("组件从缓存获取微信用户信息")
                self.setData({
                  userInfo: app.getGlobalWxUserInfo()
                })
            }else{
              // console.log("组件从 后台服务器获取微信用户信息")
              wx.getUserInfo({
                success: data => {
                  // console.log("获取用户授权后 从微信获取 微信用户数据")
                  // console.log(data)
                  let datas = {
                    iv: data.iv,
                    encryptedData: data.encryptedData,
                    openId: app.getGlobalOpenId()
                  }

                  self.getUserInfoFromServer(datas)
                }
              })
            }
            
          } else {
            console.log("用户未授权 获取用户信息")
           
          }
        }
      })
    },
    getUserInfoFromServer(data){
      let self = this
      // 从服务端获取微信用户信息(将加密数据解密)
      // console.log("从服务器获取解密后的 微信用户信息")
      const weixin = weixinModel.decryptUserInfo(data)
      weixin.then(
        res => {
          // console.log(res)
          if (res && res.code == 1) {
            // 将微信用户信息存入本地缓存
            app.setGlobalWxUserInfo(res.data)
            self.setData({
              userInfo: res.data,
              hasUserInfo: true
            })
            // 触发自定义事件，将userInfo 传递到父级页面
            // console.log("准备触发自定义事件")
            // console.log(res.data)
            this.triggerEvent('onGetUserInfo', {
              userInfo: res.data
            }, {})
          }

        }
      )
    }
  }
})

export {
  mineBehavior
}